#ifndef MY_APP_H
#define MY_APP_H

#include <stdio.h>
#include "esp_err.h"
#include "ESP_LOG.h"
#include "freertos/FreeRTOS.h"
#include "lvgl.h"
#include "nvs.h"
#include "nvs_flash.h"
#include "gui_guider.h"
#include "esp_wifi.h"              // 包含ESP WiFi相关函数
#include "PCF85063.h"
#include "lv_dclock.h"
#include "lv_radiobtn.h"

typedef struct 
{

    char city[20]; //城市
    char weather[20]; //天气
    uint8_t code; //天气代码
    int8_t hight_temperature; //温度
    int8_t low_temperature; //温度
    int8_t humidity; //湿度

    /* data */
} weather_data_t;

typedef struct
{
    int16_t temperature; //温度
    int16_t humidity; //湿度
    int16_t max_temperature; //最高温度
    int16_t min_temperature; //最低温度
    int16_t max_humidity; //最高湿度
    int16_t min_humidity; //最低湿度
} dht11_data_t;

extern QueueHandle_t dht11_Queue;       // 声明一个队列句柄
extern weather_data_t weather_data;
extern SemaphoreHandle_t http_Mutex;
extern uint8_t wifi_switch_flag;
extern uint8_t SetDateTimeFlag;
extern bool SmartConfig_flag;
extern bool search_wifi_flag;//搜索wifi标志位
extern bool wifi_connect_flag;//wifi连接标志位
extern bool ntp_set_success_flag;//ntp设置成功标志位
void  ui_read_val_init();               // 初始化UI状态
void my_app_init();               // 初始化MY_APP
bool read_wifi_sw_state(void);             // 读取wifi开关状态
bool read_time_sw_state(void);             // 读取时间开关状态
esp_err_t write_wifi_sw_state(bool state); // 写入wifi开关状态
esp_err_t write_time_sw_state(bool state); // 写入时间开关状态

/*任务函数*/
void my_Ui_Task_Init(void); // UI任务初始化
void my_wifi_task_init(void); // wifi任务初始化
/**********/

void smartconfig_start(void); // smartconfig启动
void my_wifi_init(void); // wifi初始化
void my_wifi_scan(void); // wifi扫描
void create_wifi_list(void); // 创建wifi列表
void add_wifi_scan_list(void);//往列表里添加wifi信息

esp_err_t write_nvs_ssid(char *ssid); // 写入nvs的ssid
esp_err_t write_nvs_password(char *pwd); // 写入nvs的password
void screen_set_wifi_init(void); // 设置wifi界面初始化
void get_ntp_time(void); // 获取ntp时间
void get_my_weather(void); // 获取天气数据
void get_bili_fans(void); // 获取b站粉丝数
#endif                                     /* MY_APP_H */